import request from '@/utils/request'

/**
 * 外部表单管理相关API
 */

/**
 * 获取表单记录列表
 * @param params 查询参数
 * @returns 表单记录列表
 */
export const getFormRecords = (params: {
  page?: number
  pageSize?: number
  batchNo?: string
  channelCode?: string
  status?: number
  startTime?: string
  endTime?: string
}) => {
  return request({
    url: '/external/form/records',
    method: 'get',
    params
  })
}

/**
 * 获取表单统计数据
 * @returns 统计数据
 */
export const getFormStatistics = () => {
  return request({
    url: '/external/form/statistics',
    method: 'get'
  })
}

/**
 * 重试表单处理
 * @param id 表单记录ID
 * @returns 重试结果
 */
export const retryFormRecord = (id: number) => {
  return request({
    url: `/external/form/retry/${id}`,
    method: 'post'
  })
}

/**
 * 批量重试表单处理
 * @param ids 表单记录ID列表
 * @returns 重试结果
 */
export const batchRetryFormRecords = (ids: number[]) => {
  return request({
    url: '/external/form/batch-retry',
    method: 'post',
    data: { ids }
  })
}

/**
 * 获取表单处理状态
 * @param batchNo 批次号
 * @returns 处理状态
 */
export const getFormProcessStatus = (batchNo: string) => {
  return request({
    url: `/external/form/status/${batchNo}`,
    method: 'get'
  })
}

/**
 * 提交外部表单数据
 * @param data 表单数据
 * @returns 提交结果
 */
export const submitExternalForm = (data: {
  channelCode: string
  formData: Record<string, any>
  formVersion?: string
  userId?: string
  timestamp?: number
  signature?: string
}) => {
  return request({
    url: '/external/form/submit',
    method: 'post',
    data
  })
}

/**
 * 获取数据清洗配置列表
 * @param params 查询参数
 * @returns 清洗配置列表
 */
export const getDataCleaningConfigs = (params: {
  page?: number
  pageSize?: number
  channelCode?: string
  status?: number
  configName?: string
}) => {
  return request({
    url: '/external/config/cleaning',
    method: 'get',
    params
  })
}

/**
 * 创建数据清洗配置
 * @param config 配置数据
 * @returns 创建结果
 */
export const createDataCleaningConfig = (config: {
  channelCode: string
  configName: string
  fieldMapping: string
  validationRules: string
  transformRules?: string
  status: number
}) => {
  return request({
    url: '/external/config/cleaning',
    method: 'post',
    data: config
  })
}

/**
 * 更新数据清洗配置
 * @param id 配置ID
 * @param config 配置数据
 * @returns 更新结果
 */
export const updateDataCleaningConfig = (id: number, config: {
  channelCode?: string
  configName?: string
  fieldMapping?: string
  validationRules?: string
  transformRules?: string
  status?: number
}) => {
  return request({
    url: `/external/config/cleaning/${id}`,
    method: 'put',
    data: config
  })
}

/**
 * 删除数据清洗配置
 * @param id 配置ID
 * @returns 删除结果
 */
export const deleteDataCleaningConfig = (id: number) => {
  return request({
    url: `/external/config/cleaning/${id}`,
    method: 'delete'
  })
}

/**
 * 获取分发日志列表
 * @param params 查询参数
 * @returns 分发日志列表
 */
export const getDistributionLogs = (params: {
  page?: number
  pageSize?: number
  batchNo?: string
  formRecordId?: number
  status?: number
  targetType?: string
  startTime?: string
  endTime?: string
}) => {
  return request({
    url: '/external/distribution/logs',
    method: 'get',
    params
  })
}

/**
 * 获取分发统计信息
 * @param params 查询参数
 * @returns 分发统计信息
 */
export const getDistributionStatistics = (params: {
  startTime?: string
  endTime?: string
  channelCode?: string
}) => {
  return request({
    url: '/external/distribution/statistics',
    method: 'get',
    params
  })
}

/**
 * 获取渠道列表
 * @returns 渠道列表
 */
export const getChannels = () => {
  return request({
    url: '/external/channels',
    method: 'get'
  })
}